Proftpd + MySQL on Debian 10 Kategoria: Linux | Tagi: ftp, mysql, proftpd | Autor: Bartłomiej Gałęzia

1. Podstawowe paczki

apt-get install aptitude
aptitude update
aptitude install vim nmap mc screen unzip sudo
aptitude install apache2 mariadb-server php php-mbstring php-gd php-curl php-zip php-xml php-imagick php-cgi php-mysql php-pear php-gettext libapache2-mod-php php-common php-phpseclib
mysql_secure_installation
aptitude install proftpd proftpd-mod-mysql

2. Baza danych i użytkownik

mysql -u root -p
CREATE DATABASE ftpdb;
CREATE USER 'ftpuser'@'localhost' IDENTIFIED BY 'ftppass';
GRANT ALL ON ftpdb.* TO 'ftpuser'@'localhost';
FLUSH PRIVILEGES;
\q

3. Lokalna grupa i użytkownik dla użytkowników wirtualnych

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser

4. Lokalny folder FTP

mkdir -p /home/ftp/
chown ftpuser:ftpgroup /home/ftp/

5. Struktura bazy danych

CREATE TABLE ftpgroup (
    groupname varchar(16) NOT NULL default '',
    gid smallint(6) NOT NULL default '2001',
    members varchar(16) NOT NULL default '',
    KEY groupname (groupname)
) ENGINE=MyISAM;

INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');

CREATE TABLE ftpuser (
    id int(10) unsigned NOT NULL auto_increment,
    userid varchar(32) NOT NULL default '',
    passwd varchar(32) NOT NULL default '',
    uid smallint(6) NOT NULL default '2001',
    gid smallint(6) NOT NULL default '2001',
    homedir varchar(255) NOT NULL default '',
    shell varchar(16) NOT NULL default '/sbin/nologin',
    count int(11) NOT NULL default '0',
    accessed datetime NOT NULL default '0000-00-00 00:00:00',
    modified datetime NOT NULL default '0000-00-00 00:00:00',
    PRIMARY KEY (id),
    UNIQUE KEY userid (userid)
) ENGINE=MyISAM;

INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES ('', 'username', ENCRYPT('password'), 2001, 2001, '/var/www/ftp/username/', '/sbin/nologin', 0, '', '');

6. Konfiguracja Proftpd/p>

vim /etc/proftpd/proftpd.conf
DefaultRoot ~
CreateHome on #dodać
Include /etc/proftpd/sql.conf
RequireValidShell off

7. Uruchomienie modułów

vim /etc/proftpd/modules.conf
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c

8. Konfiguracja MySQL

vim /etc/proftpd/sql.conf
SQLBackend mysql
SQLAuthTypes Crypt
SQLConnectInfo ftpuser@localhost ftpdb ftppass
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
# Aktualizacja licznika po każdym logowaniu
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Aktualizacja daty po każdej zmianie
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

9. Restart usług Proftpd

service proftpd restart

Dodaj komentarz

Philippe 10 kwietnia 2021 11:56
Attention: in /etc/proftpd/sql.conf , correct with this line to make it work:
SQLConnectInfo ftpdb @localhost ftpuser ftppass